package com.sojson.result.interfaces;

import com.sojson.constant.Constant;
import com.sojson.util.text.Convert;

/**
 * 只有一个方法,在Controller返回数据前对数据进行操作
 * 
 * @author liu
 * @date 2020-10-06
 */
public interface BeforeBodyWriteInterface {

    /** 返回类型在域中的Key */
    String RESPONSE_BODY_TYPE_KEY = "ResponseBody";
    /** 返回Json对象 */
    String JSON_OBJECT = "1";
    /** 返回Json字符串 */
    String JSON_STRING = "2";
    /** 返回加密的Json字符串 */
    String JSON_STRING_ENCRYPTION = "3";
    /** 带密钥的加密的Json字符串 */
    String JSON_STRING_KEY_ENCRYPTION = "4";
    /** 如果返回json数据要加密,加密的密钥(尽量长一点,因为页面返回的数据太长的话会导致循环多次)(不写为没有密钥) */
    String RESPONSE_DATA_KEY = Convert.toStr(Constant.PROPERTIES.getProperty("so.application.responseData.key"), null);
    /** 返回数据的类型如果为字符串,转换前是否先判断是不是字符串(不设置为true) */
    boolean RESPONSE_DATA_TYPE_IS_STRING =
        Convert.toBool(Constant.PROPERTIES.getProperty("so.application.responseData.type.isString"), true);

    /**
     * 在Controller返回数据前对数据进行操作
     * 
     * @param body 返回的对象
     * @return
     */
    Object BeforeBodyWrite(Object body);

}